/*******************************************************************************
 * Copyright (c) 2008, 2009 Tapestry IDE Developers
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     Tapestry IDE Developers - initial API and implementation
 *******************************************************************************/
package com.googlecode.tapestry.ide.core.ioc;

/**
 * A factory for creating IBean objects.
 */
public interface IBeanFactory {

	/** The Constant LOG. */
	public static final String LOG = "log";

	/** The Constant IMAGE_REGISTRY. */
	public static final String IMAGE_REGISTRY = "imageRegistry";

	/** The Constant IMAGE_DESCRIPTOR_REGISTRY. */
	public static final String IMAGE_DESCRIPTOR_REGISTRY = "imageDescriptorRegistry";

	/** The Constant TAPESTRY_MODEL. */
	public static final String TAPESTRY_MODEL = "tapestryModel";

	/** The Constant PROJECT_EXPLORER_CONTENT_PROVIDER. */
	public static final String PROJECT_EXPLORER_CONTENT_PROVIDER = "projectExplorerContentProvider";

	/** The Constant PROJECT_EXPLORER_LABEL_PROVIDER. */
	public static final String PROJECT_EXPLORER_LABEL_PROVIDER = "projectExplorerLabelProvider";

	/** The Constant ADD_NATURE_ACTION. */
	public static final String ADD_NATURE_ACTION = "addNatureAction";

	/** The Constant REMOVE_NATURE_ACTION. */
	public static final String REMOVE_NATURE_ACTION = "removeNatureAction";

	/** The Constant LABEL_DECORATOR. */
	public static final String LABEL_DECORATOR = "labelDecorator";

	/**
	 * Gets the bean.
	 * 
	 * @param id
	 *            the id
	 * 
	 * @return the bean
	 */
	Object getBean(String id);

	/**
	 * Shutdown.
	 */
	void shutdown();

}
